In a system comprising many servers and many clients there may be many situations where it is useful to be able to migrate clients from one server to another, e.g. if a server needs to be taken down for maintenance. If the sessions which run on a server are relatively short (e.g. 30-60 minutes long), clients will naturally migrate between servers when one session ends and they join another session; however, if the sessions last for a long time (e.g. days rather than minutes or hours) with clients able to join and leave during a session, then finding a time when no clients are connected to a server (e.g. so that the server can be taken down for maintenance) may not be possible or at best may be problematic.
Consequently, clients will need to be migrated during a session and during the migration operation user interaction cannot continue and so the user may be presented with a visible loading screen.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known methods of migrating clients between servers.